package com.vtuzx.kingdee.xqc_api.service;

import com.vtuzx.core.VtuzxException;
import com.vtuzx.core.bean.dto.VtuzxMap;
import com.vtuzx.core.bean.dto.VtuzxToken;
import com.vtuzx.web.bean.VtuzxDownloadBean;
import org.bson.types.ObjectId;

import java.util.List;
import java.util.Map;

/**
 * 其他出入库服务
 */
public interface IXqcAllocationService {

    /**
     * 查询仓位
     * @param userId 用户id
     * @param name 用户姓名
     * @param param 入参
     * @return 返回结果
     */
    VtuzxMap getLocationNoList(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getUserAllocationRfid(List<String> rfidList);

    VtuzxMap getUserAllocationBoxList(ObjectId userId, String name, Map<String, Object> param) throws VtuzxException;

    void addUserAllocationBox(ObjectId userId, String name, Map<String, Object> param) throws VtuzxException;

    void addUserPurInMaterialBoxList(ObjectId userId, String name, Map<String, Object> param) throws VtuzxException;

    VtuzxMap saveUserAllocation(ObjectId userId, String name, Map<String, Object> param) throws VtuzxException;

    void auditUserAllocation(ObjectId userId, String name, Map<String, Object> param) throws VtuzxException;

    void unauditUserAllocation(ObjectId userId, String name, Map<String, Object> param) throws VtuzxException;

    void deleteAllocation(ObjectId userId, String name, Map<String, Object> param);

    void deleteMaterialAllocation(ObjectId userId, String name, Map<String, Object> param);

    void deleteBoxAllocation(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getUserTask(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getUserMaterial(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getUserMaterialBox(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getAllocationList(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getAllocationHistoryDetail(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getAllocationHistoryDetailBox(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getMaterialBoxFromStock(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getAllocationWebDetail(ObjectId userId, String name, Map<String, Object> param) throws VtuzxException;

    VtuzxMap getAllocationWebDetailBox(ObjectId userId, String name, Map<String, Object> param);

    void updateAllocation(ObjectId userId, String name, Map<String, Object> param);

    void updateAllAllocation(ObjectId userId, String name, Map<String, Object> param);

    void issueUserAllocation(ObjectId userId, String name, Map<String, Object> param);

    void unissueUserAllocation(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getAllocationTaskDetail(ObjectId userId, String name, Map<String, Object> param) throws VtuzxException;

    VtuzxMap getAllocationTaskDetailBox(ObjectId userId, String name, Map<String, Object> param);

    void addTaskAllocationBox(ObjectId userId, String name, Map<String, Object> param);

    void rfidAddTaskAllocationBox(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getTaskAllocationBox(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getTaskAllocationBoxRfid(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getSaleAllocationAddMaterialCount(ObjectId userId, String name, Map<String, Object> param);

    VtuzxMap getSaleAllocationAddMaterialBox(ObjectId userId, String name, Map<String, Object> param);

    void deleteSaleAllocationAddMaterialBox(ObjectId userId, String name, Map<String, Object> param);

    VtuzxDownloadBean downloadPdaAllocation(VtuzxToken token, Map<String, Object> param) throws Exception;
}
